Skip to content

feat: Implement wallet initialization library#8838

Merged
FrederikBolding merged 29 commits into
mainfrom
fb/wallet-lib-v1
May 27, 2026
Merged

feat: Implement wallet initialization library#8838
FrederikBolding merged 29 commits into
mainfrom
fb/wallet-lib-v1

Conversation

@FrederikBolding

@FrederikBolding FrederikBolding commented May 18, 2026

Copy link
Copy Markdown
Member

Explanation

This PR implements a narrowly-scoped (as compared to the original feature branch) version of the wallet initialization library that only includes initializing the KeyringController. This can eventually be used to demonstrate the integration of the library into the clients and serves as the base for future work.

Overall it works in a similarly to the initialization pattern used in extension and mobile today, with some differences:

  • The entities initialized by the pattern are referred to as "instances", not "messenger clients".
  • It attempts to be less verbose as the initialization of an instance can be done in a single file exporting a single object, the InitializationConfiguration. This object contains both a function to setup the messenger and the instance.
  • It has no concept of "initialization messengers", the messenger returned from InitializationConfiguration.messenger is expected to have access to actions/events necessary to initialize and operate the instance.
  • There is no way to access the instances directly.

The Wallet instance provides access to the instances within using the messenger while also exposing a limited set of useful properties like state and controllerMetadata.

References

https://consensyssoftware.atlassian.net/browse/WPC-999

Checklist

  • I've updated the test suite for new or updated code as appropriate
  • I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate
  • I've communicated my changes to consumers by updating changelogs for packages I've changed
  • I've introduced breaking changes in this PR and have prepared draft pull requests for clients and consumer packages to resolve them

Note

High Risk
Introduces vault encryption, keyring bootstrap, and SRP import paths—security-sensitive wallet/key material handling even though scope is limited to KeyringController.

Overview
Replaces the @metamask/wallet placeholder with a wallet initialization library centered on a Wallet class that wires a root messenger, runs pluggable InitializationConfiguration entries, and exposes aggregated state, controllerMetadata, messenger access, and deprecated getInstance.

The default stack currently boots KeyringController only, via initialize() merging default configs with optional overrides by name, per-instance messengers, hydrated state, and instanceOptions (custom encryptor / keyring builders). Keyring setup adds a PBKDF2 (600k iterations) encryptorFactory around browser-passworder and exports importSecretRecoveryPhrase for SRP restore through messenger actions.

Package surface: real runtime dependencies (base-controller, keyring-controller, messenger, etc.), TS project references, changelog “initial release”, README dependency graph edges, and CODEOWNERS for keyring-controller initialization. Tests cover wallet lifecycle, immutability guards, vault unlock/lock, encryptor behavior, and config overrides.

Reviewed by Cursor Bugbot for commit 19bfd38. Bugbot is set up for automated code reviews on this repo. Configure here.

@FrederikBolding

Copy link
Copy Markdown
Member Author

@metamaskbot publish-previews

@github-actions

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@7.4.0-preview-598dbe642
@metamask-previews/accounts-controller@38.1.1-preview-598dbe642
@metamask-previews/address-book-controller@7.1.2-preview-598dbe642
@metamask-previews/ai-controllers@0.6.3-preview-598dbe642
@metamask-previews/analytics-controller@1.0.1-preview-598dbe642
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-598dbe642
@metamask-previews/announcement-controller@8.1.0-preview-598dbe642
@metamask-previews/app-metadata-controller@2.0.1-preview-598dbe642
@metamask-previews/approval-controller@9.0.1-preview-598dbe642
@metamask-previews/assets-controller@7.1.2-preview-598dbe642
@metamask-previews/assets-controllers@108.1.0-preview-598dbe642
@metamask-previews/authenticated-user-storage@1.0.1-preview-598dbe642
@metamask-previews/base-controller@9.1.0-preview-598dbe642
@metamask-previews/base-data-service@0.1.2-preview-598dbe642
@metamask-previews/bridge-controller@72.0.4-preview-598dbe642
@metamask-previews/bridge-status-controller@71.1.4-preview-598dbe642
@metamask-previews/build-utils@3.0.4-preview-598dbe642
@metamask-previews/chain-agnostic-permission@1.6.1-preview-598dbe642
@metamask-previews/chomp-api-service@3.1.0-preview-598dbe642
@metamask-previews/claims-controller@0.5.1-preview-598dbe642
@metamask-previews/client-controller@1.0.1-preview-598dbe642
@metamask-previews/compliance-controller@2.0.1-preview-598dbe642
@metamask-previews/composable-controller@12.0.1-preview-598dbe642
@metamask-previews/config-registry-controller@0.3.1-preview-598dbe642
@metamask-previews/connectivity-controller@0.2.0-preview-598dbe642
@metamask-previews/controller-utils@12.1.0-preview-598dbe642
@metamask-previews/core-backend@6.2.2-preview-598dbe642
@metamask-previews/delegation-controller@3.0.0-preview-598dbe642
@metamask-previews/earn-controller@12.1.2-preview-598dbe642
@metamask-previews/eip-5792-middleware@3.0.3-preview-598dbe642
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-598dbe642
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-598dbe642
@metamask-previews/ens-controller@19.1.3-preview-598dbe642
@metamask-previews/eth-block-tracker@15.0.1-preview-598dbe642
@metamask-previews/eth-json-rpc-middleware@23.1.3-preview-598dbe642
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-598dbe642
@metamask-previews/foundryup@1.0.1-preview-598dbe642
@metamask-previews/gas-fee-controller@26.2.1-preview-598dbe642
@metamask-previews/gator-permissions-controller@4.1.2-preview-598dbe642
@metamask-previews/geolocation-controller@0.1.3-preview-598dbe642
@metamask-previews/json-rpc-engine@10.5.0-preview-598dbe642
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-598dbe642
@metamask-previews/keyring-controller@25.5.0-preview-598dbe642
@metamask-previews/logging-controller@8.0.2-preview-598dbe642
@metamask-previews/message-manager@14.1.2-preview-598dbe642
@metamask-previews/messenger@1.2.0-preview-598dbe642
@metamask-previews/messenger-cli@0.2.0-preview-598dbe642
@metamask-previews/money-account-balance-service@1.0.2-preview-598dbe642
@metamask-previews/money-account-controller@0.3.0-preview-598dbe642
@metamask-previews/money-account-upgrade-controller@2.0.1-preview-598dbe642
@metamask-previews/multichain-account-service@10.0.0-preview-598dbe642
@metamask-previews/multichain-api-middleware@3.1.2-preview-598dbe642
@metamask-previews/multichain-network-controller@3.1.1-preview-598dbe642
@metamask-previews/multichain-transactions-controller@7.1.0-preview-598dbe642
@metamask-previews/name-controller@9.1.2-preview-598dbe642
@metamask-previews/network-controller@32.0.0-preview-598dbe642
@metamask-previews/network-enablement-controller@5.1.1-preview-598dbe642
@metamask-previews/notification-services-controller@23.1.1-preview-598dbe642
@metamask-previews/passkey-controller@2.0.1-preview-598dbe642
@metamask-previews/permission-controller@13.1.1-preview-598dbe642
@metamask-previews/permission-log-controller@5.1.0-preview-598dbe642
@metamask-previews/perps-controller@6.0.1-preview-598dbe642
@metamask-previews/phishing-controller@17.1.2-preview-598dbe642
@metamask-previews/polling-controller@16.0.5-preview-598dbe642
@metamask-previews/preferences-controller@23.1.0-preview-598dbe642
@metamask-previews/profile-metrics-controller@3.1.4-preview-598dbe642
@metamask-previews/profile-sync-controller@28.1.0-preview-598dbe642
@metamask-previews/ramps-controller@13.3.1-preview-598dbe642
@metamask-previews/rate-limit-controller@7.0.1-preview-598dbe642
@metamask-previews/react-data-query@0.2.0-preview-598dbe642
@metamask-previews/remote-feature-flag-controller@4.2.1-preview-598dbe642
@metamask-previews/sample-controllers@5.0.1-preview-598dbe642
@metamask-previews/seedless-onboarding-controller@9.1.0-preview-598dbe642
@metamask-previews/selected-network-controller@26.1.3-preview-598dbe642
@metamask-previews/shield-controller@5.1.2-preview-598dbe642
@metamask-previews/signature-controller@39.2.2-preview-598dbe642
@metamask-previews/snap-account-service@0.1.0-preview-598dbe642
@metamask-previews/social-controllers@2.2.1-preview-598dbe642
@metamask-previews/storage-service@1.0.1-preview-598dbe642
@metamask-previews/subscription-controller@6.1.3-preview-598dbe642
@metamask-previews/transaction-controller@65.4.0-preview-598dbe642
@metamask-previews/transaction-pay-controller@22.4.0-preview-598dbe642
@metamask-previews/user-operation-controller@41.2.2-preview-598dbe642
@metamask-previews/wallet@0.0.0-preview-598dbe642

@FrederikBolding

Copy link
Copy Markdown
Member Author

@metamaskbot publish-previews

@github-actions

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@7.4.0-preview-ea54cecca
@metamask-previews/accounts-controller@38.1.1-preview-ea54cecca
@metamask-previews/address-book-controller@7.1.2-preview-ea54cecca
@metamask-previews/ai-controllers@0.6.3-preview-ea54cecca
@metamask-previews/analytics-controller@1.0.1-preview-ea54cecca
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-ea54cecca
@metamask-previews/announcement-controller@8.1.0-preview-ea54cecca
@metamask-previews/app-metadata-controller@2.0.1-preview-ea54cecca
@metamask-previews/approval-controller@9.0.1-preview-ea54cecca
@metamask-previews/assets-controller@7.1.2-preview-ea54cecca
@metamask-previews/assets-controllers@108.1.0-preview-ea54cecca
@metamask-previews/authenticated-user-storage@1.0.1-preview-ea54cecca
@metamask-previews/base-controller@9.1.0-preview-ea54cecca
@metamask-previews/base-data-service@0.1.2-preview-ea54cecca
@metamask-previews/bridge-controller@72.0.4-preview-ea54cecca
@metamask-previews/bridge-status-controller@71.1.4-preview-ea54cecca
@metamask-previews/build-utils@3.0.4-preview-ea54cecca
@metamask-previews/chain-agnostic-permission@1.6.1-preview-ea54cecca
@metamask-previews/chomp-api-service@3.1.0-preview-ea54cecca
@metamask-previews/claims-controller@0.5.1-preview-ea54cecca
@metamask-previews/client-controller@1.0.1-preview-ea54cecca
@metamask-previews/compliance-controller@2.0.1-preview-ea54cecca
@metamask-previews/composable-controller@12.0.1-preview-ea54cecca
@metamask-previews/config-registry-controller@0.3.1-preview-ea54cecca
@metamask-previews/connectivity-controller@0.2.0-preview-ea54cecca
@metamask-previews/controller-utils@12.1.0-preview-ea54cecca
@metamask-previews/core-backend@6.2.2-preview-ea54cecca
@metamask-previews/delegation-controller@3.0.0-preview-ea54cecca
@metamask-previews/earn-controller@12.1.2-preview-ea54cecca
@metamask-previews/eip-5792-middleware@3.0.3-preview-ea54cecca
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-ea54cecca
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-ea54cecca
@metamask-previews/ens-controller@19.1.3-preview-ea54cecca
@metamask-previews/eth-block-tracker@15.0.1-preview-ea54cecca
@metamask-previews/eth-json-rpc-middleware@23.1.3-preview-ea54cecca
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-ea54cecca
@metamask-previews/foundryup@1.0.1-preview-ea54cecca
@metamask-previews/gas-fee-controller@26.2.1-preview-ea54cecca
@metamask-previews/gator-permissions-controller@4.1.2-preview-ea54cecca
@metamask-previews/geolocation-controller@0.1.3-preview-ea54cecca
@metamask-previews/json-rpc-engine@10.5.0-preview-ea54cecca
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-ea54cecca
@metamask-previews/keyring-controller@25.5.0-preview-ea54cecca
@metamask-previews/logging-controller@8.0.2-preview-ea54cecca
@metamask-previews/message-manager@14.1.2-preview-ea54cecca
@metamask-previews/messenger@1.2.0-preview-ea54cecca
@metamask-previews/messenger-cli@0.2.0-preview-ea54cecca
@metamask-previews/money-account-balance-service@1.0.2-preview-ea54cecca
@metamask-previews/money-account-controller@0.3.0-preview-ea54cecca
@metamask-previews/money-account-upgrade-controller@2.0.1-preview-ea54cecca
@metamask-previews/multichain-account-service@10.0.0-preview-ea54cecca
@metamask-previews/multichain-api-middleware@3.1.2-preview-ea54cecca
@metamask-previews/multichain-network-controller@3.1.1-preview-ea54cecca
@metamask-previews/multichain-transactions-controller@7.1.0-preview-ea54cecca
@metamask-previews/name-controller@9.1.2-preview-ea54cecca
@metamask-previews/network-controller@32.0.0-preview-ea54cecca
@metamask-previews/network-enablement-controller@5.1.1-preview-ea54cecca
@metamask-previews/notification-services-controller@23.1.1-preview-ea54cecca
@metamask-previews/passkey-controller@2.0.1-preview-ea54cecca
@metamask-previews/permission-controller@13.1.1-preview-ea54cecca
@metamask-previews/permission-log-controller@5.1.0-preview-ea54cecca
@metamask-previews/perps-controller@6.0.1-preview-ea54cecca
@metamask-previews/phishing-controller@17.1.2-preview-ea54cecca
@metamask-previews/polling-controller@16.0.5-preview-ea54cecca
@metamask-previews/preferences-controller@23.1.0-preview-ea54cecca
@metamask-previews/profile-metrics-controller@3.1.4-preview-ea54cecca
@metamask-previews/profile-sync-controller@28.1.0-preview-ea54cecca
@metamask-previews/ramps-controller@13.3.1-preview-ea54cecca
@metamask-previews/rate-limit-controller@7.0.1-preview-ea54cecca
@metamask-previews/react-data-query@0.2.0-preview-ea54cecca
@metamask-previews/remote-feature-flag-controller@4.2.1-preview-ea54cecca
@metamask-previews/sample-controllers@5.0.1-preview-ea54cecca
@metamask-previews/seedless-onboarding-controller@9.1.0-preview-ea54cecca
@metamask-previews/selected-network-controller@26.1.3-preview-ea54cecca
@metamask-previews/shield-controller@5.1.2-preview-ea54cecca
@metamask-previews/signature-controller@39.2.2-preview-ea54cecca
@metamask-previews/snap-account-service@0.1.0-preview-ea54cecca
@metamask-previews/social-controllers@2.2.1-preview-ea54cecca
@metamask-previews/storage-service@1.0.1-preview-ea54cecca
@metamask-previews/subscription-controller@6.1.3-preview-ea54cecca
@metamask-previews/transaction-controller@65.4.0-preview-ea54cecca
@metamask-previews/transaction-pay-controller@22.4.0-preview-ea54cecca
@metamask-previews/user-operation-controller@41.2.2-preview-ea54cecca
@metamask-previews/wallet@0.0.0-preview-ea54cecca

@mcmire

mcmire commented May 18, 2026

Copy link
Copy Markdown
Contributor

@FrederikBolding

The entities initialized by the pattern are referred to as "instances", not "messenger clients".

Hmm. I wonder if "instances" sounds a bit too vague. It's true they are instances of classes, but then so are lots of other things.

For context, we discussed a unified term for controllers and services in this PR: https://github.com/MetaMask/decisions/pull/41#discussion_r1809429486. I had some ideas such as "messaging actor" (or just "actor"), but I think "messenger client" was the least worst option (and the one that Mark also agreed upon). "Messageable" was also a contender. Any of these options appeal to you?

@mcmire mcmire left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Going in a good direction. Here are some thoughts and comments.

Comment thread packages/wallet/src/initialization/index.ts Outdated
Comment thread packages/wallet/src/initialization/types.ts Outdated
Comment thread packages/wallet/src/Wallet.ts Outdated
Comment thread packages/wallet/src/Wallet.ts
Comment thread packages/wallet/src/initialization/instances/keyring-controller.ts Outdated
Comment thread packages/wallet/src/initialization/defaults.ts Outdated
Comment thread packages/wallet/src/initialization/types.ts Outdated
Comment thread packages/wallet/src/types.ts
@FrederikBolding

Copy link
Copy Markdown
Member Author

@metamaskbot publish-previews

@FrederikBolding

Copy link
Copy Markdown
Member Author

@FrederikBolding

The entities initialized by the pattern are referred to as "instances", not "messenger clients".

Hmm. I wonder if "instances" sounds a bit too vague. It's true they are instances of classes, but then so are lots of other things.

For context, we discussed a unified term for controllers and services in this PR: MetaMask/decisions#41 (comment). I had some ideas such as "messaging actor" (or just "actor"), but I think "messenger client" was the least worst option (and the one that Mark also agreed upon). "Messageable" was also a contender. Any of these options appeal to you?

@mcmire I haven't spent much time thinking about this, when the prototyping started I don't believe we had adopted "messenger client" on the MetaMask clients yet. If that already is our decided preferred naming, I can make changes, but "messenger client" seems similarly vague and maybe even an overloaded term considering API clients, the MetaMask clients themselves (extension/mobile) etc.

@github-actions

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@7.4.0-preview-48f8c56b7
@metamask-previews/accounts-controller@38.1.1-preview-48f8c56b7
@metamask-previews/address-book-controller@7.1.2-preview-48f8c56b7
@metamask-previews/ai-controllers@0.6.3-preview-48f8c56b7
@metamask-previews/analytics-controller@1.0.1-preview-48f8c56b7
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-48f8c56b7
@metamask-previews/announcement-controller@8.1.0-preview-48f8c56b7
@metamask-previews/app-metadata-controller@2.0.1-preview-48f8c56b7
@metamask-previews/approval-controller@9.0.1-preview-48f8c56b7
@metamask-previews/assets-controller@7.1.2-preview-48f8c56b7
@metamask-previews/assets-controllers@108.1.0-preview-48f8c56b7
@metamask-previews/authenticated-user-storage@1.0.1-preview-48f8c56b7
@metamask-previews/base-controller@9.1.0-preview-48f8c56b7
@metamask-previews/base-data-service@0.1.2-preview-48f8c56b7
@metamask-previews/bridge-controller@72.0.4-preview-48f8c56b7
@metamask-previews/bridge-status-controller@71.1.4-preview-48f8c56b7
@metamask-previews/build-utils@3.0.4-preview-48f8c56b7
@metamask-previews/chain-agnostic-permission@1.6.1-preview-48f8c56b7
@metamask-previews/chomp-api-service@3.1.0-preview-48f8c56b7
@metamask-previews/claims-controller@0.5.1-preview-48f8c56b7
@metamask-previews/client-controller@1.0.1-preview-48f8c56b7
@metamask-previews/compliance-controller@2.0.1-preview-48f8c56b7
@metamask-previews/composable-controller@12.0.1-preview-48f8c56b7
@metamask-previews/config-registry-controller@0.3.1-preview-48f8c56b7
@metamask-previews/connectivity-controller@0.2.0-preview-48f8c56b7
@metamask-previews/controller-utils@12.1.0-preview-48f8c56b7
@metamask-previews/core-backend@6.2.2-preview-48f8c56b7
@metamask-previews/delegation-controller@3.0.0-preview-48f8c56b7
@metamask-previews/earn-controller@12.1.2-preview-48f8c56b7
@metamask-previews/eip-5792-middleware@3.0.3-preview-48f8c56b7
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-48f8c56b7
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-48f8c56b7
@metamask-previews/ens-controller@19.1.3-preview-48f8c56b7
@metamask-previews/eth-block-tracker@15.0.1-preview-48f8c56b7
@metamask-previews/eth-json-rpc-middleware@23.1.3-preview-48f8c56b7
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-48f8c56b7
@metamask-previews/foundryup@1.0.1-preview-48f8c56b7
@metamask-previews/gas-fee-controller@26.2.1-preview-48f8c56b7
@metamask-previews/gator-permissions-controller@4.1.2-preview-48f8c56b7
@metamask-previews/geolocation-controller@0.1.3-preview-48f8c56b7
@metamask-previews/json-rpc-engine@10.5.0-preview-48f8c56b7
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-48f8c56b7
@metamask-previews/keyring-controller@25.5.0-preview-48f8c56b7
@metamask-previews/logging-controller@8.0.2-preview-48f8c56b7
@metamask-previews/message-manager@14.1.2-preview-48f8c56b7
@metamask-previews/messenger@1.2.0-preview-48f8c56b7
@metamask-previews/messenger-cli@0.2.0-preview-48f8c56b7
@metamask-previews/money-account-balance-service@1.0.2-preview-48f8c56b7
@metamask-previews/money-account-controller@0.3.0-preview-48f8c56b7
@metamask-previews/money-account-upgrade-controller@2.0.1-preview-48f8c56b7
@metamask-previews/multichain-account-service@10.0.0-preview-48f8c56b7
@metamask-previews/multichain-api-middleware@3.1.2-preview-48f8c56b7
@metamask-previews/multichain-network-controller@3.1.1-preview-48f8c56b7
@metamask-previews/multichain-transactions-controller@7.1.0-preview-48f8c56b7
@metamask-previews/name-controller@9.1.2-preview-48f8c56b7
@metamask-previews/network-controller@32.0.0-preview-48f8c56b7
@metamask-previews/network-enablement-controller@5.1.1-preview-48f8c56b7
@metamask-previews/notification-services-controller@23.1.1-preview-48f8c56b7
@metamask-previews/passkey-controller@2.0.1-preview-48f8c56b7
@metamask-previews/permission-controller@13.1.1-preview-48f8c56b7
@metamask-previews/permission-log-controller@5.1.0-preview-48f8c56b7
@metamask-previews/perps-controller@6.0.1-preview-48f8c56b7
@metamask-previews/phishing-controller@17.1.2-preview-48f8c56b7
@metamask-previews/polling-controller@16.0.5-preview-48f8c56b7
@metamask-previews/preferences-controller@23.1.0-preview-48f8c56b7
@metamask-previews/profile-metrics-controller@3.1.4-preview-48f8c56b7
@metamask-previews/profile-sync-controller@28.1.0-preview-48f8c56b7
@metamask-previews/ramps-controller@13.3.1-preview-48f8c56b7
@metamask-previews/rate-limit-controller@7.0.1-preview-48f8c56b7
@metamask-previews/react-data-query@0.2.0-preview-48f8c56b7
@metamask-previews/remote-feature-flag-controller@4.2.1-preview-48f8c56b7
@metamask-previews/sample-controllers@5.0.1-preview-48f8c56b7
@metamask-previews/seedless-onboarding-controller@9.1.0-preview-48f8c56b7
@metamask-previews/selected-network-controller@26.1.3-preview-48f8c56b7
@metamask-previews/shield-controller@5.1.2-preview-48f8c56b7
@metamask-previews/signature-controller@39.2.2-preview-48f8c56b7
@metamask-previews/snap-account-service@0.1.0-preview-48f8c56b7
@metamask-previews/social-controllers@2.2.1-preview-48f8c56b7
@metamask-previews/storage-service@1.0.1-preview-48f8c56b7
@metamask-previews/subscription-controller@6.1.3-preview-48f8c56b7
@metamask-previews/transaction-controller@65.4.0-preview-48f8c56b7
@metamask-previews/transaction-pay-controller@22.4.0-preview-48f8c56b7
@metamask-previews/user-operation-controller@41.2.2-preview-48f8c56b7
@metamask-previews/wallet@0.0.0-preview-48f8c56b7

@FrederikBolding FrederikBolding requested a review from mcmire May 20, 2026 08:23
@FrederikBolding

Copy link
Copy Markdown
Member Author

@metamaskbot publish-previews

@github-actions

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@7.4.0-preview-b6651eda2
@metamask-previews/accounts-controller@38.1.1-preview-b6651eda2
@metamask-previews/address-book-controller@7.1.2-preview-b6651eda2
@metamask-previews/ai-controllers@0.6.3-preview-b6651eda2
@metamask-previews/analytics-controller@1.0.1-preview-b6651eda2
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-b6651eda2
@metamask-previews/announcement-controller@8.1.0-preview-b6651eda2
@metamask-previews/app-metadata-controller@2.0.1-preview-b6651eda2
@metamask-previews/approval-controller@9.0.1-preview-b6651eda2
@metamask-previews/assets-controller@7.1.2-preview-b6651eda2
@metamask-previews/assets-controllers@108.1.0-preview-b6651eda2
@metamask-previews/authenticated-user-storage@1.0.1-preview-b6651eda2
@metamask-previews/base-controller@9.1.0-preview-b6651eda2
@metamask-previews/base-data-service@0.1.2-preview-b6651eda2
@metamask-previews/bridge-controller@72.0.4-preview-b6651eda2
@metamask-previews/bridge-status-controller@71.1.4-preview-b6651eda2
@metamask-previews/build-utils@3.0.4-preview-b6651eda2
@metamask-previews/chain-agnostic-permission@1.6.1-preview-b6651eda2
@metamask-previews/chomp-api-service@3.1.0-preview-b6651eda2
@metamask-previews/claims-controller@0.5.1-preview-b6651eda2
@metamask-previews/client-controller@1.0.1-preview-b6651eda2
@metamask-previews/compliance-controller@2.0.1-preview-b6651eda2
@metamask-previews/composable-controller@12.0.1-preview-b6651eda2
@metamask-previews/config-registry-controller@0.3.1-preview-b6651eda2
@metamask-previews/connectivity-controller@0.2.0-preview-b6651eda2
@metamask-previews/controller-utils@12.1.0-preview-b6651eda2
@metamask-previews/core-backend@6.2.2-preview-b6651eda2
@metamask-previews/delegation-controller@3.0.0-preview-b6651eda2
@metamask-previews/earn-controller@12.1.2-preview-b6651eda2
@metamask-previews/eip-5792-middleware@3.0.3-preview-b6651eda2
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-b6651eda2
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-b6651eda2
@metamask-previews/ens-controller@19.1.3-preview-b6651eda2
@metamask-previews/eth-block-tracker@15.0.1-preview-b6651eda2
@metamask-previews/eth-json-rpc-middleware@23.1.3-preview-b6651eda2
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-b6651eda2
@metamask-previews/foundryup@1.0.1-preview-b6651eda2
@metamask-previews/gas-fee-controller@26.2.1-preview-b6651eda2
@metamask-previews/gator-permissions-controller@4.1.2-preview-b6651eda2
@metamask-previews/geolocation-controller@0.1.3-preview-b6651eda2
@metamask-previews/json-rpc-engine@10.5.0-preview-b6651eda2
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-b6651eda2
@metamask-previews/keyring-controller@25.5.0-preview-b6651eda2
@metamask-previews/logging-controller@8.0.2-preview-b6651eda2
@metamask-previews/message-manager@14.1.2-preview-b6651eda2
@metamask-previews/messenger@1.2.0-preview-b6651eda2
@metamask-previews/messenger-cli@0.2.0-preview-b6651eda2
@metamask-previews/money-account-balance-service@1.0.2-preview-b6651eda2
@metamask-previews/money-account-controller@0.3.0-preview-b6651eda2
@metamask-previews/money-account-upgrade-controller@2.0.1-preview-b6651eda2
@metamask-previews/multichain-account-service@10.0.0-preview-b6651eda2
@metamask-previews/multichain-api-middleware@3.1.2-preview-b6651eda2
@metamask-previews/multichain-network-controller@3.1.1-preview-b6651eda2
@metamask-previews/multichain-transactions-controller@7.1.0-preview-b6651eda2
@metamask-previews/name-controller@9.1.2-preview-b6651eda2
@metamask-previews/network-controller@32.0.0-preview-b6651eda2
@metamask-previews/network-enablement-controller@5.1.1-preview-b6651eda2
@metamask-previews/notification-services-controller@23.1.1-preview-b6651eda2
@metamask-previews/passkey-controller@2.0.1-preview-b6651eda2
@metamask-previews/permission-controller@13.1.1-preview-b6651eda2
@metamask-previews/permission-log-controller@5.1.0-preview-b6651eda2
@metamask-previews/perps-controller@6.0.1-preview-b6651eda2
@metamask-previews/phishing-controller@17.1.2-preview-b6651eda2
@metamask-previews/polling-controller@16.0.5-preview-b6651eda2
@metamask-previews/preferences-controller@23.1.0-preview-b6651eda2
@metamask-previews/profile-metrics-controller@3.1.4-preview-b6651eda2
@metamask-previews/profile-sync-controller@28.1.0-preview-b6651eda2
@metamask-previews/ramps-controller@13.3.1-preview-b6651eda2
@metamask-previews/rate-limit-controller@7.0.1-preview-b6651eda2
@metamask-previews/react-data-query@0.2.0-preview-b6651eda2
@metamask-previews/remote-feature-flag-controller@4.2.1-preview-b6651eda2
@metamask-previews/sample-controllers@5.0.1-preview-b6651eda2
@metamask-previews/seedless-onboarding-controller@9.1.0-preview-b6651eda2
@metamask-previews/selected-network-controller@26.1.3-preview-b6651eda2
@metamask-previews/shield-controller@5.1.2-preview-b6651eda2
@metamask-previews/signature-controller@39.2.2-preview-b6651eda2
@metamask-previews/snap-account-service@0.1.0-preview-b6651eda2
@metamask-previews/social-controllers@2.2.1-preview-b6651eda2
@metamask-previews/storage-service@1.0.1-preview-b6651eda2
@metamask-previews/subscription-controller@6.1.3-preview-b6651eda2
@metamask-previews/transaction-controller@65.4.0-preview-b6651eda2
@metamask-previews/transaction-pay-controller@22.4.0-preview-b6651eda2
@metamask-previews/user-operation-controller@41.2.2-preview-b6651eda2
@metamask-previews/wallet@0.0.0-preview-b6651eda2

@mcmire

mcmire commented May 20, 2026

Copy link
Copy Markdown
Contributor

I haven't spent much time thinking about this, when the prototyping started I don't believe we had adopted "messenger client" on the MetaMask clients yet. If that already is our decided preferred naming, I can make changes, but "messenger client" seems similarly vague and maybe even an overloaded term considering API clients, the MetaMask clients themselves (extension/mobile) etc.

Yeah, it's not not a perfect name for sure. I purposefully avoided using the term "messenger client" in my presentation for similar reasons. I don't think we have adopted the term widely, so we could come up with a different one and no one would bat an eye.

I guess we could go with "instance" for now and maybe something else will pop out later.

@mcmire

mcmire commented May 20, 2026

Copy link
Copy Markdown
Contributor

@FrederikBolding This looks pretty good to me so far. Let me know when this is out of draft.

@FrederikBolding

Copy link
Copy Markdown
Member Author

@metamaskbot publish-previews

@github-actions

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@7.4.0-preview-1d367b049
@metamask-previews/accounts-controller@38.1.1-preview-1d367b049
@metamask-previews/address-book-controller@7.1.2-preview-1d367b049
@metamask-previews/ai-controllers@0.6.3-preview-1d367b049
@metamask-previews/analytics-controller@1.0.1-preview-1d367b049
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-1d367b049
@metamask-previews/announcement-controller@8.1.0-preview-1d367b049
@metamask-previews/app-metadata-controller@2.0.1-preview-1d367b049
@metamask-previews/approval-controller@9.0.1-preview-1d367b049
@metamask-previews/assets-controller@7.1.2-preview-1d367b049
@metamask-previews/assets-controllers@108.1.0-preview-1d367b049
@metamask-previews/authenticated-user-storage@1.0.1-preview-1d367b049
@metamask-previews/base-controller@9.1.0-preview-1d367b049
@metamask-previews/base-data-service@0.1.2-preview-1d367b049
@metamask-previews/bridge-controller@72.0.4-preview-1d367b049
@metamask-previews/bridge-status-controller@71.1.4-preview-1d367b049
@metamask-previews/build-utils@3.0.4-preview-1d367b049
@metamask-previews/chain-agnostic-permission@1.6.1-preview-1d367b049
@metamask-previews/chomp-api-service@3.1.0-preview-1d367b049
@metamask-previews/claims-controller@0.5.1-preview-1d367b049
@metamask-previews/client-controller@1.0.1-preview-1d367b049
@metamask-previews/compliance-controller@2.0.1-preview-1d367b049
@metamask-previews/composable-controller@12.0.1-preview-1d367b049
@metamask-previews/config-registry-controller@0.3.1-preview-1d367b049
@metamask-previews/connectivity-controller@0.2.0-preview-1d367b049
@metamask-previews/controller-utils@12.1.0-preview-1d367b049
@metamask-previews/core-backend@6.2.2-preview-1d367b049
@metamask-previews/delegation-controller@3.0.0-preview-1d367b049
@metamask-previews/earn-controller@12.1.2-preview-1d367b049
@metamask-previews/eip-5792-middleware@3.0.3-preview-1d367b049
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-1d367b049
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-1d367b049
@metamask-previews/ens-controller@19.1.3-preview-1d367b049
@metamask-previews/eth-block-tracker@15.0.1-preview-1d367b049
@metamask-previews/eth-json-rpc-middleware@23.1.3-preview-1d367b049
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-1d367b049
@metamask-previews/foundryup@1.0.1-preview-1d367b049
@metamask-previews/gas-fee-controller@26.2.1-preview-1d367b049
@metamask-previews/gator-permissions-controller@4.1.2-preview-1d367b049
@metamask-previews/geolocation-controller@0.1.3-preview-1d367b049
@metamask-previews/json-rpc-engine@10.5.0-preview-1d367b049
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-1d367b049
@metamask-previews/keyring-controller@25.5.0-preview-1d367b049
@metamask-previews/logging-controller@8.0.2-preview-1d367b049
@metamask-previews/message-manager@14.1.2-preview-1d367b049
@metamask-previews/messenger@1.2.0-preview-1d367b049
@metamask-previews/messenger-cli@0.2.0-preview-1d367b049
@metamask-previews/money-account-balance-service@1.0.2-preview-1d367b049
@metamask-previews/money-account-controller@0.3.0-preview-1d367b049
@metamask-previews/money-account-upgrade-controller@2.0.1-preview-1d367b049
@metamask-previews/multichain-account-service@10.0.0-preview-1d367b049
@metamask-previews/multichain-api-middleware@3.1.2-preview-1d367b049
@metamask-previews/multichain-network-controller@3.1.1-preview-1d367b049
@metamask-previews/multichain-transactions-controller@7.1.0-preview-1d367b049
@metamask-previews/name-controller@9.1.2-preview-1d367b049
@metamask-previews/network-controller@32.0.0-preview-1d367b049
@metamask-previews/network-enablement-controller@5.1.1-preview-1d367b049
@metamask-previews/notification-services-controller@23.1.1-preview-1d367b049
@metamask-previews/passkey-controller@2.0.1-preview-1d367b049
@metamask-previews/permission-controller@13.1.1-preview-1d367b049
@metamask-previews/permission-log-controller@5.1.0-preview-1d367b049
@metamask-previews/perps-controller@6.0.1-preview-1d367b049
@metamask-previews/phishing-controller@17.1.2-preview-1d367b049
@metamask-previews/polling-controller@16.0.5-preview-1d367b049
@metamask-previews/preferences-controller@23.1.0-preview-1d367b049
@metamask-previews/profile-metrics-controller@3.1.4-preview-1d367b049
@metamask-previews/profile-sync-controller@28.1.0-preview-1d367b049
@metamask-previews/ramps-controller@13.3.1-preview-1d367b049
@metamask-previews/rate-limit-controller@7.0.1-preview-1d367b049
@metamask-previews/react-data-query@0.2.0-preview-1d367b049
@metamask-previews/remote-feature-flag-controller@4.2.1-preview-1d367b049
@metamask-previews/sample-controllers@5.0.1-preview-1d367b049
@metamask-previews/seedless-onboarding-controller@9.1.0-preview-1d367b049
@metamask-previews/selected-network-controller@26.1.3-preview-1d367b049
@metamask-previews/shield-controller@5.1.2-preview-1d367b049
@metamask-previews/signature-controller@39.2.2-preview-1d367b049
@metamask-previews/snap-account-service@0.1.0-preview-1d367b049
@metamask-previews/social-controllers@2.2.1-preview-1d367b049
@metamask-previews/storage-service@1.0.1-preview-1d367b049
@metamask-previews/subscription-controller@6.1.3-preview-1d367b049
@metamask-previews/transaction-controller@65.4.0-preview-1d367b049
@metamask-previews/transaction-pay-controller@22.4.0-preview-1d367b049
@metamask-previews/user-operation-controller@41.2.2-preview-1d367b049
@metamask-previews/wallet@0.0.0-preview-1d367b049

@FrederikBolding

Copy link
Copy Markdown
Member Author

@metamaskbot publish-previews

@github-actions

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@7.4.0-preview-d28b57d4b
@metamask-previews/accounts-controller@38.1.1-preview-d28b57d4b
@metamask-previews/address-book-controller@7.1.2-preview-d28b57d4b
@metamask-previews/ai-controllers@0.6.3-preview-d28b57d4b
@metamask-previews/analytics-controller@1.0.1-preview-d28b57d4b
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-d28b57d4b
@metamask-previews/announcement-controller@8.1.0-preview-d28b57d4b
@metamask-previews/app-metadata-controller@2.0.1-preview-d28b57d4b
@metamask-previews/approval-controller@9.0.1-preview-d28b57d4b
@metamask-previews/assets-controller@7.1.2-preview-d28b57d4b
@metamask-previews/assets-controllers@108.1.0-preview-d28b57d4b
@metamask-previews/authenticated-user-storage@1.0.1-preview-d28b57d4b
@metamask-previews/base-controller@9.1.0-preview-d28b57d4b
@metamask-previews/base-data-service@0.1.2-preview-d28b57d4b
@metamask-previews/bridge-controller@72.0.4-preview-d28b57d4b
@metamask-previews/bridge-status-controller@71.1.4-preview-d28b57d4b
@metamask-previews/build-utils@3.0.4-preview-d28b57d4b
@metamask-previews/chain-agnostic-permission@1.6.1-preview-d28b57d4b
@metamask-previews/chomp-api-service@3.1.0-preview-d28b57d4b
@metamask-previews/claims-controller@0.5.1-preview-d28b57d4b
@metamask-previews/client-controller@1.0.1-preview-d28b57d4b
@metamask-previews/compliance-controller@2.0.1-preview-d28b57d4b
@metamask-previews/composable-controller@12.0.1-preview-d28b57d4b
@metamask-previews/config-registry-controller@0.3.1-preview-d28b57d4b
@metamask-previews/connectivity-controller@0.2.0-preview-d28b57d4b
@metamask-previews/controller-utils@12.1.0-preview-d28b57d4b
@metamask-previews/core-backend@6.2.2-preview-d28b57d4b
@metamask-previews/delegation-controller@3.0.0-preview-d28b57d4b
@metamask-previews/earn-controller@12.1.2-preview-d28b57d4b
@metamask-previews/eip-5792-middleware@3.0.3-preview-d28b57d4b
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-d28b57d4b
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-d28b57d4b
@metamask-previews/ens-controller@19.1.3-preview-d28b57d4b
@metamask-previews/eth-block-tracker@15.0.1-preview-d28b57d4b
@metamask-previews/eth-json-rpc-middleware@23.1.3-preview-d28b57d4b
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-d28b57d4b
@metamask-previews/foundryup@1.0.1-preview-d28b57d4b
@metamask-previews/gas-fee-controller@26.2.1-preview-d28b57d4b
@metamask-previews/gator-permissions-controller@4.1.2-preview-d28b57d4b
@metamask-previews/geolocation-controller@0.1.3-preview-d28b57d4b
@metamask-previews/json-rpc-engine@10.5.0-preview-d28b57d4b
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-d28b57d4b
@metamask-previews/keyring-controller@25.5.0-preview-d28b57d4b
@metamask-previews/logging-controller@8.0.2-preview-d28b57d4b
@metamask-previews/message-manager@14.1.2-preview-d28b57d4b
@metamask-previews/messenger@1.2.0-preview-d28b57d4b
@metamask-previews/messenger-cli@0.2.0-preview-d28b57d4b
@metamask-previews/money-account-balance-service@1.0.2-preview-d28b57d4b
@metamask-previews/money-account-controller@0.3.0-preview-d28b57d4b
@metamask-previews/money-account-upgrade-controller@2.0.1-preview-d28b57d4b
@metamask-previews/multichain-account-service@10.0.0-preview-d28b57d4b
@metamask-previews/multichain-api-middleware@3.1.2-preview-d28b57d4b
@metamask-previews/multichain-network-controller@3.1.1-preview-d28b57d4b
@metamask-previews/multichain-transactions-controller@7.1.0-preview-d28b57d4b
@metamask-previews/name-controller@9.1.2-preview-d28b57d4b
@metamask-previews/network-controller@32.0.0-preview-d28b57d4b
@metamask-previews/network-enablement-controller@5.1.1-preview-d28b57d4b
@metamask-previews/notification-services-controller@23.1.1-preview-d28b57d4b
@metamask-previews/passkey-controller@2.0.1-preview-d28b57d4b
@metamask-previews/permission-controller@13.1.1-preview-d28b57d4b
@metamask-previews/permission-log-controller@5.1.0-preview-d28b57d4b
@metamask-previews/perps-controller@6.0.1-preview-d28b57d4b
@metamask-previews/phishing-controller@17.1.2-preview-d28b57d4b
@metamask-previews/polling-controller@16.0.5-preview-d28b57d4b
@metamask-previews/preferences-controller@23.1.0-preview-d28b57d4b
@metamask-previews/profile-metrics-controller@3.1.4-preview-d28b57d4b
@metamask-previews/profile-sync-controller@28.1.0-preview-d28b57d4b
@metamask-previews/ramps-controller@13.3.1-preview-d28b57d4b
@metamask-previews/rate-limit-controller@7.0.1-preview-d28b57d4b
@metamask-previews/react-data-query@0.2.0-preview-d28b57d4b
@metamask-previews/remote-feature-flag-controller@4.2.1-preview-d28b57d4b
@metamask-previews/sample-controllers@5.0.1-preview-d28b57d4b
@metamask-previews/seedless-onboarding-controller@9.1.0-preview-d28b57d4b
@metamask-previews/selected-network-controller@26.1.3-preview-d28b57d4b
@metamask-previews/shield-controller@5.1.2-preview-d28b57d4b
@metamask-previews/signature-controller@39.2.2-preview-d28b57d4b
@metamask-previews/snap-account-service@0.1.0-preview-d28b57d4b
@metamask-previews/social-controllers@2.2.1-preview-d28b57d4b
@metamask-previews/storage-service@1.0.1-preview-d28b57d4b
@metamask-previews/subscription-controller@6.1.3-preview-d28b57d4b
@metamask-previews/transaction-controller@65.4.0-preview-d28b57d4b
@metamask-previews/transaction-pay-controller@22.4.0-preview-d28b57d4b
@metamask-previews/user-operation-controller@41.2.2-preview-d28b57d4b
@metamask-previews/wallet@0.0.0-preview-d28b57d4b

@FrederikBolding FrederikBolding requested a review from ccharly May 21, 2026 12:14

export { defaultConfigurations };

type ExtractInstance<Config> =

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would be helpful to have some docs for these types, since it may not be immediately obvious what some of these do.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

import type { InstanceSpecificOptions } from '../types';
import type { DefaultActions, DefaultEvents, RootMessenger } from './defaults';

export type InstanceState<Instance> = Instance extends { state: unknown }

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same here re: documentation.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added documentation for some of them, any specific ones you think are still confusing? a2c4a8c

Comment on lines +17 to +18
const indices = phrase.split(' ').map((word) => wordlist.indexOf(word));
const mnemonic = new Uint8Array(new Uint16Array(indices).buffer);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IIRC key-tree has a util function for this.

Comment thread packages/wallet/src/initialization/types.ts
Comment thread packages/wallet/src/Wallet.test.ts Outdated
Comment thread packages/wallet/src/Wallet.ts Outdated
Comment thread packages/wallet/src/Wallet.ts
@FrederikBolding FrederikBolding requested a review from Mrtenz May 21, 2026 12:57
Comment thread packages/wallet/src/index.ts
Comment thread packages/wallet/src/Wallet.ts

@mcmire mcmire left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks basically good, I just had one question about test coverage.

import { initialize } from './initialization/initialization';
import { WalletOptions } from './types';

export class Wallet {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: Would be good to add JSDoc that briefly describes the purpose of this class and provides an example. Same for the README. This can be done in a future PR, however.

Comment thread packages/wallet/jest.config.js Outdated
Comment thread packages/wallet/src/initialization/instances/keyring-controller.ts
Comment thread packages/wallet/src/initialization/types.ts
@FrederikBolding

Copy link
Copy Markdown
Member Author

@metamaskbot publish-previews

@github-actions

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@7.4.0-preview-681bd3562
@metamask-previews/accounts-controller@38.1.1-preview-681bd3562
@metamask-previews/address-book-controller@7.1.2-preview-681bd3562
@metamask-previews/ai-controllers@0.6.3-preview-681bd3562
@metamask-previews/analytics-controller@1.0.1-preview-681bd3562
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-681bd3562
@metamask-previews/announcement-controller@8.1.0-preview-681bd3562
@metamask-previews/app-metadata-controller@2.0.1-preview-681bd3562
@metamask-previews/approval-controller@9.0.1-preview-681bd3562
@metamask-previews/assets-controller@8.0.0-preview-681bd3562
@metamask-previews/assets-controllers@108.1.0-preview-681bd3562
@metamask-previews/authenticated-user-storage@2.0.0-preview-681bd3562
@metamask-previews/base-controller@9.1.0-preview-681bd3562
@metamask-previews/base-data-service@0.1.3-preview-681bd3562
@metamask-previews/bridge-controller@73.0.1-preview-681bd3562
@metamask-previews/bridge-status-controller@71.2.0-preview-681bd3562
@metamask-previews/build-utils@3.0.4-preview-681bd3562
@metamask-previews/chain-agnostic-permission@1.6.1-preview-681bd3562
@metamask-previews/chomp-api-service@3.1.0-preview-681bd3562
@metamask-previews/claims-controller@0.5.1-preview-681bd3562
@metamask-previews/client-controller@1.0.1-preview-681bd3562
@metamask-previews/compliance-controller@2.0.1-preview-681bd3562
@metamask-previews/composable-controller@12.0.1-preview-681bd3562
@metamask-previews/config-registry-controller@0.3.1-preview-681bd3562
@metamask-previews/connectivity-controller@0.2.0-preview-681bd3562
@metamask-previews/controller-utils@12.1.0-preview-681bd3562
@metamask-previews/core-backend@6.3.0-preview-681bd3562
@metamask-previews/delegation-controller@3.0.0-preview-681bd3562
@metamask-previews/earn-controller@12.2.0-preview-681bd3562
@metamask-previews/eip-5792-middleware@3.0.4-preview-681bd3562
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-681bd3562
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-681bd3562
@metamask-previews/ens-controller@19.1.3-preview-681bd3562
@metamask-previews/eth-block-tracker@15.0.1-preview-681bd3562
@metamask-previews/eth-json-rpc-middleware@23.1.3-preview-681bd3562
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-681bd3562
@metamask-previews/foundryup@1.0.1-preview-681bd3562
@metamask-previews/gas-fee-controller@26.2.2-preview-681bd3562
@metamask-previews/gator-permissions-controller@4.2.0-preview-681bd3562
@metamask-previews/geolocation-controller@0.1.3-preview-681bd3562
@metamask-previews/json-rpc-engine@10.5.0-preview-681bd3562
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-681bd3562
@metamask-previews/keyring-controller@25.5.0-preview-681bd3562
@metamask-previews/logging-controller@8.0.2-preview-681bd3562
@metamask-previews/message-manager@14.1.2-preview-681bd3562
@metamask-previews/messenger@1.2.0-preview-681bd3562
@metamask-previews/messenger-cli@0.2.0-preview-681bd3562
@metamask-previews/money-account-balance-service@1.0.2-preview-681bd3562
@metamask-previews/money-account-controller@0.3.0-preview-681bd3562
@metamask-previews/money-account-upgrade-controller@2.0.2-preview-681bd3562
@metamask-previews/multichain-account-service@10.0.0-preview-681bd3562
@metamask-previews/multichain-api-middleware@3.1.2-preview-681bd3562
@metamask-previews/multichain-network-controller@3.1.2-preview-681bd3562
@metamask-previews/multichain-transactions-controller@7.1.0-preview-681bd3562
@metamask-previews/name-controller@9.1.2-preview-681bd3562
@metamask-previews/network-controller@32.0.0-preview-681bd3562
@metamask-previews/network-enablement-controller@5.2.0-preview-681bd3562
@metamask-previews/notification-services-controller@24.1.1-preview-681bd3562
@metamask-previews/passkey-controller@2.0.1-preview-681bd3562
@metamask-previews/permission-controller@13.1.1-preview-681bd3562
@metamask-previews/permission-log-controller@5.1.0-preview-681bd3562
@metamask-previews/perps-controller@6.2.0-preview-681bd3562
@metamask-previews/phishing-controller@17.2.0-preview-681bd3562
@metamask-previews/polling-controller@16.0.6-preview-681bd3562
@metamask-previews/preferences-controller@23.1.0-preview-681bd3562
@metamask-previews/profile-metrics-controller@3.1.4-preview-681bd3562
@metamask-previews/profile-sync-controller@28.1.0-preview-681bd3562
@metamask-previews/ramps-controller@14.0.0-preview-681bd3562
@metamask-previews/rate-limit-controller@7.0.1-preview-681bd3562
@metamask-previews/react-data-query@0.2.1-preview-681bd3562
@metamask-previews/remote-feature-flag-controller@4.2.1-preview-681bd3562
@metamask-previews/sample-controllers@5.0.1-preview-681bd3562
@metamask-previews/seedless-onboarding-controller@9.1.0-preview-681bd3562
@metamask-previews/selected-network-controller@26.1.3-preview-681bd3562
@metamask-previews/shield-controller@5.1.2-preview-681bd3562
@metamask-previews/signature-controller@39.2.2-preview-681bd3562
@metamask-previews/snap-account-service@0.2.0-preview-681bd3562
@metamask-previews/social-controllers@2.2.1-preview-681bd3562
@metamask-previews/storage-service@1.0.1-preview-681bd3562
@metamask-previews/subscription-controller@6.1.3-preview-681bd3562
@metamask-previews/transaction-controller@66.0.0-preview-681bd3562
@metamask-previews/transaction-pay-controller@22.6.3-preview-681bd3562
@metamask-previews/user-operation-controller@41.2.2-preview-681bd3562
@metamask-previews/wallet@0.0.0-preview-681bd3562

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 8e35748. Configure here.

Comment thread packages/wallet/src/index.ts
@FrederikBolding FrederikBolding requested a review from mcmire May 26, 2026 13:29
},
"dependencies": {
"@metamask/base-controller": "^9.1.0",
"@metamask/browser-passworder": "^6.0.0",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess we're using this package in a way that works across platforms? Curious if it might be worth it at some point to extract the more platform-agnostic functions to some other library. Otherwise it might be a bit confusing. We can think about that later perhaps.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@metamask/browser-passworder works on most platforms except mobile, so it seemed fine to include. It's a good default option IMO.

@mcmire mcmire left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@FrederikBolding FrederikBolding added this pull request to the merge queue May 27, 2026
Merged via the queue into main with commit ddca654 May 27, 2026
370 checks passed
@FrederikBolding FrederikBolding deleted the fb/wallet-lib-v1 branch May 27, 2026 08:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants